/**
 * @author wz<br>
 * @version 1.0<br>
 *     @ClassName SingletonLazySafe @<Description> TODO
 * @date 2021/12/8 9:41<br>
 */
public class SingletonDoubleLock {

  private volatile static SingletonDoubleLock instance;

  private SingletonDoubleLock() {}

  public static  SingletonDoubleLock getInstance() {
    if (instance == null) {
      synchronized (SingletonDoubleLock.class){
        if (instance == null){
          instance=new SingletonDoubleLock();
        }
      }

    }

    return instance;
  }

  /**
   * 双检锁/双重校验锁（DCL，即 double-checked locking） JDK 版本：JDK1.5 起
   *
   * <p>是否 Lazy 初始化：是
   *
   * <p>是否多线程安全：是
   *
   * <p>实现难度：较复杂
   *
   * <p>描述：这种方式采用双锁机制，安全且在多线程情况下能保持高性能。 getInstance() 的性能对应用程序很关键。* synchronized 才能保证单例，但加锁会影响效率。
   *
   */
}
